#单例模式是一种常用的的软件设计模式。目的：确保某一个类只有一个实例存在
# 如果希望在整个系统中，某个类只能出现一个实例的时候，那么这个单例对象就能满足要求
#创建一个单例对象 推荐基于__new__去实现
# 利用类属性保存初次创建的实例对象，第二次实例化的时候判断类属性是否有保存的实例对象，如果有就返回类属性保存的，如果没有就调用父类__new__方法创建新的实例对象
class DateBaseClass(object):
    _instance=None#保存实例对象
    def __new__(cls, *args, **kwargs):
        if not cls._instance:#如果不存在就调用父类__new__方法创建，否则返回已创建的实例对象
            cls._instance=super().__new__(cls,*args, **kwargs)
        return cls._instance
    pass
class DBoptSingle(DateBaseClass):
    pass
db1=DBoptSingle()
print(id(db1))
db2=DBoptSingle()
print(id(db2))
#id相同说明实例化两次对象，实际上都是同一个对象
